package class01;

/**
 * @author Isamu
 * @create 2024-03-07 16:20
 */
public class Code05_BitMap {

    public static void main(String[] args) {
        int a = 0;  // a 占 32 bit

        int[] arr = new int[10];  // arr 占 32bit * 10 = 320bits
        // arr[0] int 占0~31位
        // arr[1] int 占32~63位
        // arr[2] int 占64~95位
//        arr[5] = 262144 ;
        arr[5] = 16384 ;


        int i = 178; // 想取得第178位的状态

        int numIndex = 178 / 32;
        int bitIndex = 178 % 32;

        // 拿到第178位的状态
        // 移动到第178位，这一位与上1 就能得到这一位的状态
        int s = (  (arr[numIndex] >> (bitIndex))       & 1 );

        // 把第178为的状态改成1
        arr[numIndex] = arr[numIndex] | ( 1 << (bitIndex) );

        // 把第178为的状态改成0
        arr[numIndex] = arr[numIndex] & ( ~( 1 << (bitIndex) ) );


        for (int ar : arr) {
            System.out.print(ar + " ");
        }
        System.out.println("");

       int aaa = (arr[178 / 32] >> (178 % 32)) & 1;
        System.out.println(aaa);//todo： ?????????? 究竟是取到了位还是取到了啥啊


    }


}
